package com.holystone.orca.sys.mybatis.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.holystone.orca.sys.model.SysDepAllDataVO;
import com.holystone.orca.sys.model.SysDepartmentVO;
import com.holystone.orca.sys.mybatis.model.SysDepartment;
import com.holystone.orca.util.MyMapper;

public interface SysDepartmentMapper extends MyMapper<SysDepartment> {
	
	/**
	 * @desc:根据业务实例集合、部门id、设备类型，取得所有绑定业务的设备
	 * @author: guanzhichao
	 * @date:2015年11月24日 下午8:35:57
	 * @Param: instIds 实例id集合，用“,”隔开
	 * @Param: depIds 部门id集合，用“,”隔开
	 * @return: List<SysDepartmentVO>
	 */
	public List<SysDepartmentVO> findBundEqemet(SysDepartmentVO deptVO);
	/**
	 * @desc: 通过函数获取它本身和它所有的子孙对象
	 * @author: 宋旭源
	 * @date: 2015年11月30日 下午7:50:12
	 * @param depId
	 * @return List<SysDepAllDataVO>
	 */
	public List<SysDepAllDataVO> selectDepChildrensById(@Param("funcStr") String funcStr, @Param("whereStr") String whereStr);
	/**
	 * @desc: 通过函数获取它本身和它所有子孙的主键id
	 * @author: 宋旭源
	 * @date: 2015年12月1日 下午2:39:52
	 * @param funcStr
	 * @param whereStr
	 * @return
	 */
	public List<Integer> selectDepChildrenIdsById(@Param("funcStr") String funcStr, @Param("whereStr") String whereStr);
	
	//查询出deptname，用于person添加页面的部门选项
	public List<SysDepartment> selectDeptName();
	//查询所有父类部门
	public List<SysDepartment> selectParentDep(Map<Object, String> map);
	
	public int addDep(Map<Object, String> map);//添加部门
	
	public List<SysDepartment>  selectIsHaveDep(Map<Object, String> map);//查找当前公司是否存在该部门
	
	public SysDepartment selectDepBydepId(int depId);//用于放到修改框里的数据
	
	public int editDepBydepId(Map<String, String> map);//修改department
	
	public List<SysDepartment> selectChildDep(Map<Object, String> map);//生成子类部门
	
	public List<SysDepartment> selectDepNoSelfBydepId(Map<Object, String> map);//查询所有不包括自己的部门
	
	public int delDepByDepId(int depId);//通过depId删除表中数据
	
	public int delSelectDep(List<Integer> list);//多项删除
}